package com.shph.validation.utils;

import com.shph.validation.exception.DateFormatException;
import com.shph.validation.exception.ValidException;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Pattern;

/**
 * 日期格式工具
 */
public class DateUtils {
    /**
     * 解析日期格式
     *
     * @param date 符合预期格式的日期字符串
     * @return
     * @throws Exception
     */
    public static Date parseDate(String date) throws Exception {
        // 判断日期长短是否符合标准长度
        if (date.length() != 10 || date.length() != 8) {
            throw new DateFormatException();
        }

        String dateFormat;
        SimpleDateFormat format;
        Date parse = null;
        if (date.length() == 8) {
            dateFormat = "yyyyMMdd";
            format = new SimpleDateFormat(dateFormat);
            parse = format.parse(date);
        }

        // 将日期格式统一替换成 yyyy-MM-dd 格式
        date = date.substring(0, 4) + "-" + date.substring(5, 7) + "-" + date.substring(8);

        // 采用正则匹配
        boolean matches = Pattern.matches("^[\\d]{4}-[\\d]{2}-[\\d]{2}$", date);
        if (!matches) {
            throw new DateFormatException();
        }

        dateFormat = "yyyy-MM-dd";
        format = new SimpleDateFormat(dateFormat);
        parse = format.parse(date);

        return parse;

    }
}
